package com.mallcai.bigdata.ladon.service.report;

import com.mallcai.bigdata.ladon.dpl.entity.common.Datasource;
import com.mallcai.bigdata.ladon.dpl.entity.report.QueryField;
import com.mallcai.bigdata.ladon.dpl.entity.report.Report;
import com.mallcai.bigdata.ladon.dpl.entity.report.ReportColumn;
import com.mallcai.bigdata.ladon.dpl.entity.report.ReportSql;
import com.mallcai.bigdata.ladon.service.report.impl.MetaRefreshEvent;

import java.util.List;

/**
 * @author feixy
 * @version 1.0
 * @date 2019-09-03 16:03
 */
public interface IReportObjectQueryService {

    /**
     * 通过报表编码查询报表实体
     * @param reportCode
     * @return
     */
    Report getReportByCode(String reportCode);

    /**
     * 根据sqlId获取ReportSql实体
     * @param sqlId
     * @return
     */
    ReportSql getReportSqlById(Long sqlId);

    /**
     * 根据数据源id获取数据源实体
     * @param dsId
     * @return
     */
    Datasource getDatasourceById(Long dsId);

    /**
     * 根据报表id查询出所有的报表字段
     * @param reportId
     * @return
     */
    List<ReportColumn> listColumnByReportId(Long reportId);

    /**
     * 查询指定报表的所有查询字段
     * @param reportId
     * @return
     */
    List<QueryField> listQueryFieldByReportId(Long reportId);

    /**
     * 删除缓存
     * @param event
     */
    void evictMetaCache(MetaRefreshEvent event);
}
